#include<stdio.h>
#include<arpa/inet.h>
#include<sys/socket.h>
#include<netinet/in.h>//结构体，方便赋值
#include<stdlib.h>

int main(int argc,char *argv[])
{//argc 表示命令行参数数量，argv 是一个包含参数字符串的数组
    if(argc!=3)
    {
        printf("invalid number!\n");
        return -1;
    }

    int sock =socket(AF_INET,SOCK_STREAM,0);
    if(sock<0)
    {
        perror("socket:");
        return -1;
    }

    struct sockaddr_in ServerAddr;
    ServerAddr.sin_family=AF_INET;
    ServerAddr.sin_port=htons(atoi(argv[2]));
    ServerAddr.sin_addr.s_addr=inet_addr(argv[1]);//程序填充 ServerAddr 结构体，设置服务器的 IP 地址、端口号等信息。
    if(connect(sock,(struct sockaddr*)&ServerAddr,sizeof(ServerAddr))<0)
    {//使用 connect 函数尝试与服务器建立连接
        perror("connect:");
        return -1;
    }

    while(1)
    {
        char temp[100]={0};
        scanf("%[^\n]",temp);
        while(getchar()!='\n');
        if(send(sock,temp,100,0)<0)
        {//send 函数接收套接字 sock、要发送的数据缓冲区 temp、数据大小（这里是 100 字节）和其他选项作为参数
            perror("send: ");
        }
    }
    return  0;
}